import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import java.io.StringReader;
import java.util.*;
import java.lang.Boolean;

class XmlCliente extends Xml
{
	List<DatosActor> naves;
	List<DatosActor> asteroides;
	List<DatosActor> balas;
	DatosActor naveCliente;

	public XmlCliente(String xml_text)
	{
		super(xml_text);
	}

	void parsearEstadoDePartida()
	{

		naves = new ArrayList<DatosActor>();
		asteroides = new ArrayList<DatosActor>();
		balas = new ArrayList<DatosActor>();

		/*Document doc = null;
		try
		{
			DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
			DocumentBuilder dbuilder = bf.newDocumentBuilder();
			InputSource is = new InputSource (new StringReader(xml_text));
			doc = dbuilder.parse (is);
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}*/

		if (document != null)
		{
			Node estadoPartida = (Node)document.getDocumentElement();
			NodeList actores = estadoPartida.getChildNodes();

			for (int i = 0; i < actores.getLength(); i++)
			{
				Node actor = actores.item (i);
				if (actor.getNodeName().equals("nave_del_cliente"))
				{
					NodeList nlNave = actor.getChildNodes();
					int x = 0;
					int y = 0;
					int angulo = 0;
					String estado = "";

					for (int j = 0; j < nlNave.getLength(); j++)
					{
						Node dato = nlNave.item (j);
						NodeList nl = dato.getChildNodes();
						Node valor = nl.item(0);
						naveCliente = new DatosActor();
						if (dato.getNodeName().equals("angulo"))
							angulo = (new Integer(valor.getNodeValue())).intValue();
						if (dato.getNodeName().equals("x"))
							x = (new Integer(valor.getNodeValue())).intValue();
						if (dato.getNodeName().equals("y"))
							y = (new Integer(valor.getNodeValue())).intValue();
						if (dato.getNodeName().equals("estado"))
							estado = valor.getNodeValue();
					}
					naveCliente = new DatosActor (x, y, angulo, estado);
					naveCliente.setNCliente(true);
				}
				if (actor.getNodeName().equals("actor"))
				{
					NodeList nlActor = actor.getChildNodes();
					int x = 0;
					int y = 0; 
					int angulo = 0;
					String estado = "";
					String tipo = "";

					for (int j = 0; j < nlActor.getLength(); j++)
					{
						Node dato = nlActor.item (j);
						NodeList nl = dato.getChildNodes();
						Node valor = nl.item(0);
						if (dato.getNodeName().equals("angulo"))
							angulo = (new Integer(valor.getNodeValue())).intValue();
						if (dato.getNodeName().equals("x"))
							x = (new Integer(valor.getNodeValue())).intValue();
						if (dato.getNodeName().equals("y"))
							y = (new Integer(valor.getNodeValue())).intValue();
						if (dato.getNodeName().equals("estado"))
							estado = valor.getNodeValue();
						if (dato.getNodeName().equals("tipo"))
							tipo = valor.getNodeValue();
					}
					if (tipo.equals ("nave"))
						naves.add(new DatosActor(x, y, angulo, estado));
					//if (tipo.equals ("asteroide"))
					//	naves.add(new DatosActor(x, y, angulo, estado));
					//if (tipo.equals ("bala"))
					//	naves.add(new DatosActor(x, y, angulo, estado));
				}
			}
		} 
	}

	HashMap<String, String> resultado ()
	{
		//<resultado><comando>conectar_partida</comando><valor>false</valor></resultado>
		HashMap<String, String> resultado1 = new HashMap<String, String>();

		Node res = document.getDocumentElement();
		NodeList listaResultado = res.getChildNodes();
		for (int i = 0; i < listaResultado.getLength(); i++)
		{
			Node nodoRes = listaResultado.item(i);
			NodeList nodo1 = nodoRes.getChildNodes();
			Node nodo2 = nodo1.item (0);
			resultado1.put (nodoRes.getNodeName(), nodo2.getNodeValue());
		}
		return resultado1;
	}
}